Complete is a tough word to define for a project. Often, when a developer says something is "complete" or "done" s/he is saying "I've coded it." In fact, this is nowhere near complete.
Here are a minimal set of characteristics to define something as complete:
Code Written
Unit Tests Written
Unit tests running reliably
Unit tests running independently with no side effects
Unit test running quickly
Code integrated with rest of source base
All unit tests passing after integrating
Code checked in to repository
User acceptance tests validated as running (manually OK, automated better)
Before even getting started, it should be clear to the team what "done" or "complete" mean.
Here are a minimal set of characteristics to define something as complete:
Before even getting started, it should be clear to the team what "done" or "complete" mean.